package com.springboot.file.provider;

import java.util.Map;

/**
 * 文档处理器接口，实现不同业务的文档内容填充逻辑
 */
public interface DocumentProvider {
    
    /**
     * 获取需要处理的业务类型
     * 
     * @return 业务类型标识
     */
    String getBusinessType();
    
    /**
     * 准备文档数据
     * 各业务可以根据需要查询数据库并生成占位符数据
     * 
     * @param parameters 查询参数
     * @return 用于替换模板中占位符的数据
     */
    Map<String, Object> prepareData(Map<String, Object> parameters);
    
    /**
     * 获取模板名称
     * 
     * @param parameters 参数
     * @return 模板名称
     */
    default String getTemplateName(Map<String, Object> parameters) {
        return "template.docx";
    }
    
    /**
     * 获取页眉内容
     * 
     * @param parameters 参数
     * @return 页眉内容
     */
    default String getHeader(Map<String, Object> parameters) {
        return null;
    }
    
    /**
     * 获取页脚内容
     * 
     * @param parameters 参数
     * @return 页脚内容
     */
    default String getFooter(Map<String, Object> parameters) {
        return null;
    }
    
    /**
     * 获取水印文本
     * 
     * @param parameters 参数
     * @return 水印文本
     */
    default String getWatermarkText(Map<String, Object> parameters) {
        return null;
    }
    
    /**
     * 获取水印颜色
     * 
     * @param parameters 参数
     * @return 水印颜色
     */
    default String getWatermarkColor(Map<String, Object> parameters) {
        return "#CCCCCC";
    }
    
    /**
     * 是否显示页码
     * 
     * @param parameters 参数
     * @return 是否显示页码
     */
    default boolean showPageNumbers(Map<String, Object> parameters) {
        return true;
    }
} 